import axios from "axios"
import { ElMessage } from 'element-plus'
import {useUserStore} from '@/store/modules/user' 

const request = axios.create({
  //
  baseURL: import.meta.env.VITE_APP_BASE_API,  //基础路径上携带/api，环境变量配置env.development
  timeout: 5000
});

// 请求拦截器
request.interceptors.request.use((config) => {
  // config配置对象，拥有一个headers属性请求头，用于给服务器携带公共参数,诸如token等
  let userStore = useUserStore();
  
  if (userStore.token) {
    config.headers.token = userStore.token;
  }
  // 必须返回配置对象
  return config;
})

// 响应拦截器
request.interceptors.response.use((response) => {
  return response.data;
}, (error) => {
  // 失败的回调，处理http请求的网络错误
  let message = '';
  // http码
  let status = error.response.status;
  switch (status) {
    case 201:
      message = '账号或密码错误哦';
      break;
    case 401:
      message = 'TOKEN过期';
      break;
    case 403:
      message = '无权访问';
      break;
    case 404:
      message = '请求地址出现问题'
      break;
    case 500:
      message = '服务端异常';
      break;
    default:
      message = '网络异常';
      break;
  }
  // 错误提示
  ElMessage({
    type: 'error',
    message
  })
  // 返回失败的promise
  return Promise.reject(error)
})

// 
export default request;